URL 관련 클래스 :: 자주 쓰이는 메소드및 API 를 정리합니다.[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

자주 쓰이는 메소드및 API 를 정리합니다.
[1]
등록일:2008-03-09 14:28:23 (0%)
작성자:
제목:URL 관련 클래스
URL  클래스는  URL  주소가  알맞은  형식의  URL  주소인지  검사하거나,  URL  주소로부터  사용되는  프로토콜,  서버명,  포트,  파일명  등을  구할  때  사용이  되어집니다.  또한,  URL  주소로  지정된  파일을  읽어  들일  때도  사용됩니다.

  

URLInfo.java

import  java.net.*;

  

public  class  URLInfo  {
    public  static  void  main(String[]  args)  {
        if(args.length  !=  1)  {
            System.out.println("사용법  :  java  URLInfo  URL");
            System.exit(1);
        }

        URL  url  =  null;

        try  {
            url  =  new  URL(args[0]);
        }  catch  (MalformedURLException  e1)  {
            System.out.println("잘못된  URL  형식입니다.");
            System.out.println(e1);
            System.exit(1);
        }

        System.out.println("프로토콜  :  "        +  url.getProtocol());
        System.out.println("호스트  이름  :  "  +  url.getHost());
        System.out.println("포트번호  :  "        +  url.getPort());
        System.out.println("파일이름  :  "        +  url.getPath());
        System.out.println("사용자  쿼리  :  "  +  url.getQuery());
    }
}

  

-  URL  클래스의  생성자에  외부로부터  전달  받은  URL  주소  문자열을  지정해서  URL  객체를  생성했습니다.

-  잘못된  형식의  URL  주소를  인자로  지정했다면  java.net.MalformedURLException이  발생합니다.

  

URL  클래스를  이용해서  웹사이트  읽어오기

도스창에서  아래와  같이  해보세요.

C:\>telnet  www.oracleclub.com  80  (엔터)

C:\>GET  /  (엔터)

GET  /라는  글씨가  안보일  수도  있습니다.

  

*  www.oracleclub.com의  메인  페이지(index.jsp  이거나  index.html  Maybe)  의  태그가  보일  것입니다.  이는  웹서버가  동작하는  80번  포트에  telnet  프로그램으로  접속한  후  '/'  디렉토리의  내용을  GET  방식으로  보여달라고  HTTP  프로토콜에  해당하는  문자열을  보낸  것입니다.  그  결과  서버는  접속한  클라이언트가  telnet  프로그램인줄  모르고  웹브라우저로  판단해서  '/'디렉토리에  해당하는  HTML  태그를  출력한  것입니다.  실제로  '/'  디렉토리에  대한  정보를  출력한  것이  아니고  디렉토리명을  지정하면  기본적으로  열리는  'index.html'이나  'index.jsp'  파일이  호출된  것입니다.

  

*  소켓프로그래밍에서  간단하게  웹서버로부터  요청을  보내서  결과를  출력하려면  아래의  과정을  거칩니다.

1.  웹서버의  IP와  웹서버의  동작포트(80)에  접속하는  Socket  객체를  생성

2.  접속에  성공하면  Socket으로부터  얻은  OutputStream을  통해서  웹서버에게  'GET  /'  문자열을  전송

3.  웹서버는  '/'  디렉토리  아래에  있는  기본적인  index.html  파일을  열어  클라이언트에게  결과를  출력

4.  클라이언트는  Socket으로부터  얻은  InputStream을  통해서  웹서버가  보내주는  정보를  읽어들여  출력

  

*  URL  클래스에  있는  openStream()  메소드는  URL  클래스에게  지정된  URL  주소가  가리키는  문서를  읽을  수  있는  InputStream을  반환합니다.  HTTP  프로토콜을  몰라도  손쉽게  웹사이트의  내용을  긁어올  수  있는  것입니다.

  

WebSpider.java

import  java.net.*;
import  java.io.*;

public  class  WebSpider  {
    public  static  void  main(String[]  args)  {
        if(args.length  !=  2)  {

            //java  WebSpider  http://www.daum.net  daum.txt
          System.out.println("사용법  :  java  WebSpider  URL  filename");
          System.exit(1);
        }

        URL  url  =  null;

        try  {
            url  =  new  URL(args[0]);
        }  catch  (MalformedURLException  e1)  {
            System.out.println("잘못된  URL  형식입니다.");
            System.out.println(e1);
            System.exit(1);
        }

        FileOutputStream  fos  =  null;

        try  {
            InputStream  in  =  url.openStream();
            fos  =  new  FileOutputStream(args[1]);
            byte[]  buffer  =  new  byte[512];
            int  readcount  =  0;
            System.out.println("읽어오기  시작합니다.");

            while((readcount  =  in.read(buffer))  !=  -1)  {
              fos.write(buffer,  0,  readcount);
          }

            System.out.println(args[1]  +  "  파일에  모두  저장하였습니다.");
        }  catch(Exception  ex)  {
            System.out.println(ex);
        }  finally  {
            try  {
                if(fos  !=  null)  fos.close();
            }  catch(Exception  e)  {}
        }
    }
}

-  URL  클래스에  있는  openStream()을  이용해서  InputStream을  얻습니다.  해당  InputStream은  URL  주소가  가리키는  내용을  스트림  형식으로  읽어  들일  수  있는  객체이며  InputStream을  통해서  읽어  들인  내용을  저장하기  위해서  FileOutputStream을  사용했습니다.

-  openStream()을  이용해서  읽어  들일  때에는  웹페이지를  GET  방식으로만  호출할  수  있습니다.  만약,  POST  방식으로  호출하려면  URLConnection을  이용하면  됩니다.

출처  :  http://cafe.naver.com/itline.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=10442
[2008년  03월  09일  14:29:37  수정되었습니다.]
[본문링크] URL 관련 클래스
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=2418
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.